package clienteServidor.socket;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import clienteServidor.Cliente;
import clienteServidor.DatosEquipo;
import clienteServidor.RespuestaServidor;
import clienteServidor.excepciones.ImposibleObtenerIPException;

public class ClienteSocket {
	private Socket servidor;
	private RespuestaServidor respuestaServidor= null;
	private Cliente cliente;
	private ObjectOutputStream oos;
	private ObjectInputStream dip;
	
	public ClienteSocket(Cliente cliente) throws UnknownHostException, IOException {
		this.cliente= cliente;
		servidor= new Socket(cliente.getDatoConfiguracion().getIpServidor(), 
							 cliente.getDatoConfiguracion().PUERTO);
		
		oos= new ObjectOutputStream(servidor.getOutputStream());
		dip= new ObjectInputStream(servidor.getInputStream());
	}
	
	public void enviarDatosEquipo() throws IOException, ImposibleObtenerIPException{
		//la primera vez respuestaServidor puede ser null;
		if(respuestaServidor == null) respuestaServidor= new RespuestaServidor();
		DatosEquipo datosEquipo = cliente.getDatosEquipoActualizado(respuestaServidor.getOrdenesServidor());
		oos.writeObject(datosEquipo);
		System.out.println("Estado: "+datosEquipo+".\n Enviado al servidor: "+servidor.getInetAddress().getHostAddress());
	}
	
	public RespuestaServidor recibirRespuestaServidor() throws ClassNotFoundException, IOException {
		respuestaServidor= (RespuestaServidor)dip.readObject();
		return respuestaServidor;
	}
	
	public void cerrarConexion() throws IOException{
		servidor.close();
	}	
}
